//
//  VersionValidate.swift
//  mall-ios
//
//  Created by Meak Tsui on 2018/11/16.
//  Copyright © 2018 Meak Tsui. All rights reserved.
//

import Foundation
import SwiftyUserDefaults


extension DefaultsKeys {
    //当前存储的app版本,当用户首次下载打开app时，值为nil，当用户更新后首次打开，值为上一个版本号
    var version: DefaultsKey<Int?> { .init("version") }
}



/// 判断用户是否第一次打开app,新安装后第一次打开、更新后第一次打开都表示第一次打开
///
/// - Parameter autoUpdate: 是否自动更新版本号，true表示自动更新，默认为true
/// - Returns: true表示第一次打开
public func isFirstLaunch(autoUpdate:Bool = true) -> Bool {
    let version = Defaults.version
    let versionStr = Bundle.main.infoDictionary?["CFBundleVersion"] as! String
    let currentVersion = Int(versionStr)
    if autoUpdate {
        Defaults.version = currentVersion
    }
    return currentVersion ?? -1 > version ?? -1
}



/// 判断用户是否安装后第一次打开app
///
/// - Parameter autoUpdate: 是否自动更新版本号，true表示自动更新，默认为true
/// - Returns: true表示第一次打开
public func isFirstInstallLaunch(autoUpdate:Bool = true) -> Bool {
    let version = Defaults.version
    let versionStr = Bundle.main.infoDictionary?["CFBundleVersion"] as! String
    let currentVersion = Int(versionStr)
    if autoUpdate {
        Defaults.version = currentVersion
    }
    return version == nil
}


/// 判断用户是否更新后第一次打开app，注意，用户第一次安装后打开时，该方法返回false
///
/// - Parameter autoUpdate: 是否自动更新版本号，true表示自动更新，默认为true
/// - Returns: true表示第一次打开
public func isFirstUpdateLaunch(autoUpdate:Bool = true) -> Bool {
    let version = Defaults.version
    let versionStr = Bundle.main.infoDictionary?["CFBundleVersion"] as! String
    let currentVersion = Int(versionStr)
    if autoUpdate {
        Defaults.version = currentVersion
    }
    if version == nil {
        return false
    }
    return currentVersion ?? -1 > version ?? -1
}

